A representation of the Generalized Maxwell Slip model.
The Generalized Maxwell Slip model is defined as follows.
where:
Friction Force
Normal Force
Attraction Coefficient
Position
Velocity
Coulomb Friction Coefficient
Static Friction Coefficient
i-th Element Stiffness
i-th Element Damping Coefficient
Viscous Damping Coefficient
Frictional Stiffness
Stribeck Curve Shape Factor
Stribeck Velocity Coefficient
i-th Element Scaling Factor
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=real64), | public | :: | attraction_coefficient |
The attraction coefficient. |
|||
real(kind=real64), | public | :: | coulomb_coefficient |
The Coulomb (dynamic) friction coefficient. |
|||
real(kind=real64), | public | :: | shape_parameter |
The Stribeck curve shape parameter. |
|||
real(kind=real64), | public | :: | static_coefficient |
The static friction coefficient. |
|||
real(kind=real64), | public | :: | stiffness |
The frictional stiffness. |
|||
real(kind=real64), | public | :: | stribeck_velocity |
The Stribeck velocity parameter. |
|||
real(kind=real64), | public | :: | viscous_damping |
The viscous damping coefficient. |
Overload this routine to establish constraings for the model to be enforced as part of the fitting operation.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(friction_model), | intent(in) | :: | this |
The friction_model object. |
||
real(kind=real64), | intent(in), | dimension(:) | :: | t |
An N-element array containing the time points at which the data to be fit was sampled. |
|
real(kind=real64), | intent(in), | dimension(:) | :: | x |
An N-element array containing the relative motion data. |
|
real(kind=real64), | intent(in), | dimension(:) | :: | dxdt |
An N-element array containing the relative velocity data. |
|
real(kind=real64), | intent(in), | dimension(:) | :: | nrm |
An N-element array containing the normal force data. |
|
real(kind=real64), | intent(in), | dimension(:) | :: | f |
An N-element array containing the friction force data. |
|
real(kind=real64), | intent(out), | dimension(:) | :: | rst |
An M-element array where the results of the constraint equations will be written. M must be equal to the number of constraint equations for the model. |
Computes the state equation for a single element.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(in) | :: | this |
The generalized_maxwell_slip_model object. |
||
integer(kind=int32), | intent(in) | :: | i |
The index of the element. |
||
real(kind=real64), | intent(in) | :: | t |
The current simulation time value. |
||
real(kind=real64), | intent(in) | :: | x |
The current value of the relative position between the contacting bodies. |
||
real(kind=real64), | intent(in) | :: | dxdt |
The current value of the relative velocity between the contacting bodies. |
||
real(kind=real64), | intent(in) | :: | nrm |
The current normal force between the contacting bodies. |
||
real(kind=real64), | intent(in) | :: | z |
The current value of the state variable for the element. |
The value of the state equation.
Evaluates the friction model given the defined parameter state.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(inout) | :: | this |
The generalized_maxwell_slip_model object. |
||
real(kind=real64), | intent(in) | :: | t |
The current simulation time value. |
||
real(kind=real64), | intent(in) | :: | x |
The current value of the relative position between the contacting bodies. |
||
real(kind=real64), | intent(in) | :: | dxdt |
The current value of the relative velocity between the contacting bodies. |
||
real(kind=real64), | intent(in) | :: | nrm |
The current normal force between the contacting bodies. |
||
real(kind=real64), | intent(in), | optional, | dimension(:) | :: | svars |
An optional array containing any internal state variables the model may rely upon. |
The friction force.
Attempts to fit a friction model to the supplied data using a Levenberg-Marquardt solver.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(friction_model), | intent(inout), | target | :: | this |
The friction model. On output, the model is updated with the final, fitted parameters. |
|
real(kind=real64), | intent(in), | target, dimension(:) | :: | t |
An N-element array containing the time points at which the friction data was sampled. This array must contain monotonically increasing data. |
|
real(kind=real64), | intent(in), | target, dimension(:) | :: | x |
An N-element array containing the relative position data. |
|
real(kind=real64), | intent(in), | target, dimension(:) | :: | v |
An N-element array containing the relative velocity data. |
|
real(kind=real64), | intent(in), | target, dimension(:) | :: | f |
An N-element array containing the friction force data. |
|
real(kind=real64), | intent(in), | target, dimension(:) | :: | n |
An N-element array containing the normal force data. |
|
real(kind=real64), | intent(in), | optional, | dimension(:) | :: | weights |
An optional N-element array that can be used to weight specific data points. The default is an array of all ones such that all points are weighted equally. |
real(kind=real64), | intent(in), | optional, | dimension(:) | :: | maxp |
An M-element array (M = the number of model parameters) containing a maximum limit for each model parameter. |
real(kind=real64), | intent(in), | optional, | dimension(:) | :: | minp |
An M-element array containing the minimum limit for each model parameter. |
real(kind=real64), | intent(in), | optional | :: | alpha |
An optional input that defines the significance level at which to evaluate the confidence intervals. The default value is 0.05 such that a 95% confidence interval is calculated. |
|
class(ode_integrator), | intent(inout), | optional, | target | :: | integrator |
An optional input, used in the event the model has internal state variables, that provides integration of the state equations. The defaults is a 4th order Rosenbrock method. |
type(iteration_controls), | intent(in), | optional | :: | controls |
An optional input providing custom iteration controls. |
|
type(lm_solver_options), | intent(in), | optional | :: | settings |
An optional input providing custom settings for the solver. |
|
type(convergence_info), | intent(out), | optional | :: | info |
An optional output that can be used to gain information about the iterative solution and the nature of the convergence. |
|
type(regression_statistics), | intent(out), | optional, | dimension(:) | :: | stats |
An optional output array of M-elements that can be used to retrieve statistical information regarding the fit of each of the M model parameters. |
real(kind=real64), | intent(out), | optional, | target, dimension(:) | :: | fmod |
An optional N-element array used to provide the fitted model results. |
real(kind=real64), | intent(out), | optional, | target, dimension(:) | :: | resid |
An optional N-element array containing the fitted residuals. |
class(errors), | intent(inout), | optional, | target | :: | err |
An optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. |
Converts an array into the parameters for the friction model.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(inout) | :: | this |
The generalized_maxwell_slip_model object. |
||
real(kind=real64), | intent(in), | dimension(:) | :: | x |
The array of parameters. See parameter_count to determine the size of this array. The parameter order is as follows:
|
|
class(errors), | intent(inout), | optional, | target | :: | err |
An optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. |
Gets the number of constraint equations the model requires to be satisfied when fitting to data.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(in) | :: | this |
The generalized_maxwell_slip_model object. |
The number of constraint equations.
Gets the number of friction elements in the model.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(in) | :: | this |
The generalized_maxwell_slip_model object. |
The number of friction elements in the model.
Gets the damping term for the specified element.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(in) | :: | this |
The generalized_maxwell_slip_model object. |
||
integer(kind=int32), | intent(in) | :: | i |
The index of the element. |
The requested value.
Gets the scaling factor for the specified element.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(in) | :: | this |
The generalized_maxwell_slip_model object. |
||
integer(kind=int32), | intent(in) | :: | i |
The index of the element. |
The requested value.
Gets the stiffness term for the specified element.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(in) | :: | this |
The generalized_maxwell_slip_model object. |
||
integer(kind=int32), | intent(in) | :: | i |
The index of the element. |
The requested value.
Gets the number of internal state variables used by the model.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(in) | :: | this |
The generalized_maxwell_slip_model object. |
The internal state variable count.
Returns a value stating if the model relies upon internal state variables.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(in) | :: | this |
The generalized_maxwell_slip_model object. |
Returns true if the model utilizes internal state variables; else, returns false.
Initializes the model.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(inout) | :: | this |
The generalized_maxwell_slip_model object. |
||
integer(kind=int32), | intent(in) | :: | n |
The number of friction elements. This value must be at least 1. |
||
class(errors), | intent(inout), | optional, | target | :: | err |
An optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. |
Gets the number of model parameters.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(in) | :: | this |
The generalized_maxwell_slip_model object. |
The number of model parameters.
Resets the friction model to it's original state.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(friction_model), | intent(inout) | :: | this |
The friction_model object. |
Sets the damping term for the specified element.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(inout) | :: | this |
The generalized_maxwell_slip_model object. |
||
integer(kind=int32), | intent(in) | :: | i |
The index of the element. |
||
real(kind=real64), | intent(in) | :: | x |
The value. |
Returns true if the operation was successful; else, returns false if the object has not yet been initialized.
Sets the scaling factor for the specified element.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(inout) | :: | this |
The generalized_maxwell_slip_model object. |
||
integer(kind=int32), | intent(in) | :: | i |
The index of the element. |
||
real(kind=real64), | intent(in) | :: | x |
The value. |
Returns true if the operation was successful; else, returns false if the object has not yet been initialized.
Sets the stiffness term for the specified element.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(inout) | :: | this |
The generalized_maxwell_slip_model object. |
||
integer(kind=int32), | intent(in) | :: | i |
The index of the element. |
||
real(kind=real64), | intent(in) | :: | x |
The value. |
Returns true if the operation was successful; else, returns false if the object has not yet been initialized.
Evaluates the time derivatives of the internal friction state model.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(inout) | :: | this |
The generalized_maxwell_slip_model object. |
||
real(kind=real64), | intent(in) | :: | t |
The current simulation time value. |
||
real(kind=real64), | intent(in) | :: | x |
The current value of the relative position between the contacting bodies. |
||
real(kind=real64), | intent(in) | :: | dxdt |
The current value of the relative velocity between the contacting bodies. |
||
real(kind=real64), | intent(in) | :: | nrm |
The current normal force between the contacting bodies. |
||
real(kind=real64), | intent(in), | dimension(:) | :: | svars |
An N-element array containing any internal state variables the model may rely upon. |
|
real(kind=real64), | intent(out), | dimension(:) | :: | dsdt |
An N-element array where the state variable derivatives are to be written. |
Evaluates the Stribeck function for the model.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(in) | :: | this |
The generalized_maxwell_slip_model object. |
||
real(kind=real64), | intent(in) | :: | dxdt |
The relative velocity between the contacting bodies. |
||
real(kind=real64), | intent(in) | :: | nrm |
The normal force between the contacting bodies. |
The value of the Stribeck function. The units are units of position.
Converts the parameters of the friction model into an array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(generalized_maxwell_slip_model), | intent(in) | :: | this |
The generalized_maxwell_slip_model object. |
||
real(kind=real64), | intent(out), | dimension(:) | :: | x |
The array used to store the parameters. See parameter_count to determine the size of this array. The parameter order is as follows:
|
|
class(errors), | intent(inout), | optional, | target | :: | err |
An optional errors-based object that if provided can be used to retrieve information relating to any errors encountered during execution. If not provided, a default implementation of the errors class is used internally to provide error handling. |